package com.teamwhole.modules.sys.service;

import java.util.List;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.teamwhole.common.utils.StringUtils;
import com.teamwhole.core.persistence.service.CrudService;
import com.teamwhole.modules.sys.dao.RoleDao;
import com.teamwhole.modules.sys.entity.Role;
import com.teamwhole.modules.sys.utils.UserUtils;

@Service
public class RoleService extends CrudService<RoleDao, Role> {
	
	public List<Role> findAllRole() {
		return UserUtils.getRoleList();
	}
	
	@Transactional(readOnly = false)
    public void save(Role role) {
	    if (StringUtils.isBlank(role.getId())){
            role.preInsert();
            this.dao.insert(role);
        } else {
            role.preUpdate();
            this.dao.update(role);
        }
	    // 更新角色与菜单关联
	    this.dao.deleteRoleMenu(role);
	    if (role.getMenuList().size() > 0){
	    	this.dao.insertRoleMenu(role);
        }
	    // 更新角色与部门关联
	    this.dao.deleteRoleDept(role);
        if (role.getDeptList().size() > 0){
        	this.dao.insertRoleDept(role);
        }
        // 清除用户角色缓存
        UserUtils.removeCache(UserUtils.CACHE_ROLE_LIST);
        // 清除权限缓存
        //systemRealm.clearAllCachedAuthorizationInfo();
    }
	
	@Transactional(readOnly = false)
    public void delete(String id) {
		this.dao.delete(id);
        // 清除用户角色缓存
        UserUtils.removeCache(UserUtils.CACHE_ROLE_LIST);
        // 清除权限缓存
        //systemRealm.clearAllCachedAuthorizationInfo();
    }

}